/*时间限制:1s空间限利:256MB限定证言:不限
题目描述:
部门组织绿道骑行团建活动。租用公共双人自行车骑行，每辆自行车最多坐两人。做大载重M，
给出部门每个人的体重，请问最多需要租用多少双人自行车。
输入描述:
第一行两个数宁m，n，自行车限重m，代表部门总人数n。
第二行，n个数字，代表每个人的体重，体重都小于等于自行车限重m。
0<m<= 200
0<n <=1000000
输出描述:
最小需要的双人自行车数量。
示例1
输入:
34
3221
输出:
3
解题思路:
对部门人员按照体重进行降序排序。
对人员进行遍历。
如例1:
排序后为3221
1、3 等于承重3，则单独一辆count-1:
2、2 小于3，继须向前找，2+2-4不符合，继收向前找。2+1-3等于3，符合，1已经用过了需要置为0。count+1=2:
3、2 小于3，向前找，只利刚才处理过的0，遍历结束。结果count+1-3:
*/


/**
 * 
 * @param {Number} m 每辆车最大重量
 * @param {Number} n 多少个人
 * @param {Array} array 
 * @returns 
 */
function getMinBikeAmount(m,n,array){
   
    let count=0;
    let remain=[];//保存剩余的座位
    for (let index = 0; index < array.length; index++) {
        console.log(index,count,remain)
        const element = array[index];
        let cur=null;
        
        
        // 看看有没有多余的位置
        if(remain.length && remain[remain.length-1]>=element){
            cur=remain.pop()
            // 如果还有剩余的就直接上车
            cur-=element;
        }else{
            // 没有剩余的就新增一辆
            cur=m-element;
            count++; 
        } 
        // 把有多余的添加到备忘录
        if(cur>0){
            remain.push(cur);
        }
        
    }
    console.log(count)
    return count;

}

getMinBikeAmount(3,4,[2,1,1,1,2])// 2